package utils;


import java.io.UnsupportedEncodingException;
import java.util.Properties;
import java.util.Random;

import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.servlet.http.HttpSession;

public class Email_Activation{
	private static final String HOST = "smtp.gmail.com";
	private static final int PORT = 465;
	private static final String PASSWORD = "superschronisko";
	private static final String FROM = "eschronisko@gmail.com";
	
static StringBuilder token = new StringBuilder(60);
	
	public static String GenerateToken(){
		String replaced = null;
		Random r = new Random(System.currentTimeMillis());
		char nextAscii;
		for(int i = 0; i < 120 ; i++) {
			nextAscii = (char) (r.nextInt(122-48) + 48);
			token.append(nextAscii);
			replaced = token.substring(0, token.length() - 1);
		}
		for (int i = 0; i < replaced.length() ; i++ ) {
			replaced = replaced.replaceFirst("[^a-zA-Z0-9]", "" +(char)(r.nextInt(122-96) + 97));
		}
		//System.out.println(replaced);
		return replaced;
	}
	
	public static void SendActivationMail(String email, String user, String token, String url) throws UnsupportedEncodingException{
		/* defaultowe ustawienia serwera gmail */
		Properties props = new Properties();
		props.put("mail.smtp.host", HOST);
		props.put("mail.smtp.auth", "true");
		props.put("mail.smtp.port", PORT);
		props.put("mail.smtp.socketFactory.port", PORT);
		props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
 
		/* Pobieranie obiektu klasy session jako instancje domyslna  - inicjalizacja sesji*/
		/* pierwszy parametr to dane naszej skrzynki - obiekt props, drugi parametr jest z klasy Authenticator*/
		/* implementuja one metode getPasswordAuthentication() zwracajaca obiekty klasy PasswordAuthentication - w celu okreslenia interfejsu zapytan o haslo */
		Session session = Session.getDefaultInstance(props, new javax.mail.Authenticator() {
				protected PasswordAuthentication getPasswordAuthentication() {
					return new PasswordAuthentication(FROM,PASSWORD);
				}
			});

		try {
			/*Message - obiekty tej klasy reprezentuj� wiadomo�ci zakodowane zgodnie ze stadardem MIME. Konstruktor przyjmuje jako parametr obiekt typu Session*/
			Message message = new MimeMessage(session);
			message.setFrom(new InternetAddress(FROM,"eSchronisko")); // nadawca
			message.setRecipient(Message.RecipientType.TO, new InternetAddress(email)); // odbiorca
			message.setSubject("Witaj w eSchronisku - Link aktywacyjny"); // temat wiadomosci
			/*tresc wiadomosci */
			message.setContent("<h3>Witaj w gronie uzytkownikow portalu eSchronisko " + user +"! </h3><br><br>"
					+ "Aby moc korzystac z wszystkich funkcji kliknij w link: <br>"
					+ "<a href ='" + url +"?token=" + token + "'>Link</a><br><br>"
							+ "<br><br><br>Zaloga eSchronisko", "text/html; charset=utf-8");
			Transport.send(message); // wysylanie maila
			
			 
		} catch (MessagingException e) { //zg�oszenie wyj�tku
			
		}
	}
}
